'''
单一职责原则：
1、一个类只负责一个方面，比如auth类就只管认证，handle类就只管处理相关内容。
2、单一职责可以下放到函数的单一职责。比如auth中，login就只管登录之类的。

说明：具体方法实现略。重要的是思想！
'''


class SingleAuth(object):
    '''
    认证类：
    1、登录认证
    2、权限认证
    3、ip认证
    ......
    '''

    def login(self):
        '''
        登录认证：
        验证账户、密码是否合法，是否注册等。
        '''
        pass

    def permission(self):
        '''
        权限认证：
        增、删、改、查等的权限。
        '''
        pass

    pass


class singleHandle(object):
    '''
    handle
    假定这个handle是处理网页爬取
    '''

    @property
    def targetUrl(self):
        '''
        组合目标爬取的url链接
        @property是便于其他地方引用
        '''
        pass

    @property
    def randomUserAgent(self):
        '''
        随机的UserAgent
        '''
        pass

    def mockRequest(self, *args, **kwargs):
        '''
        模拟一个http请求： 
        这个模拟一个最常用的get请求，其他的还有post、patch、delete之类的
        '''
        headers = {  
            "UserAgent": self.randomUserAgent,
            # 自定义添加其他头部信息，如：cookies、token等
        } 

        # import requests
        response = requests.get(self.targetUrl, headers=headers)
        # 下面进行response处理判断之类
        pass

    def parseHtml(self, *args, **kwargs):
        '''
        自定义html内容的解析处理
        '''
        pass

    def batchRequest(self, *args, **kwargs):
        '''
        实现批量请求
        '''
        for req in 'xxx批量请求列表':
            response = self.mockRequest('xx1', 'xx2')
            result = self.parseHtml(res, 'xx3', 'xx4')
            pass
        pass
    pass
